﻿using System;

using System.Collections.Generic;
using Microsoft.Xna.Framework;
namespace ERF
{
    /// <summary>
    /// Defines states for the buttons.
    /// </summary>
    public enum KeyState
    {
        Up,
        Down,
        Released,
        NoMatch,
        Timeout,
    }

    /// <summary>
    /// Defines an interface for inputhandlers.
    /// </summary>
    public interface IERFInputHandler
    {      
        /// <summary>
        /// Get the location of the analog device. This could be the
        /// mouse or an analog pad.
        /// </summary>
        Microsoft.Xna.Framework.Vector2 AnalogDeviceLocation { get; }
        /// <summary>
        /// Get the location of the old analog device. 
        /// </summary>
        Microsoft.Xna.Framework.Vector2 OldAnalogDeviceLocation { get; }

        Dictionary<String, AssignedButton> ButtonConfig
        {
            get;
        }
        /// <summary>
        /// Get the State of an assigned button.
        /// </summary>
        /// <param name="command"></param>
        /// <param name="gameTime"></param>
        /// <param name="acceptRepeat"></param>
        /// <returns></returns>
        ERF.KeyState GetButtonState(String command, Microsoft.Xna.Framework.GameTime gameTime, bool acceptRepeat);

        /// <summary>
        /// Get the value of the zoom.
        /// </summary>
        int ZoomValue { get; set; }
        /// <summary>
        /// Get the old zoom value.
        /// </summary>
        int OldZoomValue { get; set; }

        PlayerIndex PlayerIndex
        {
            get;
            set;
        }
    }
}
